/**
 * @作者 钟先崟
 * @时间 2023-02-17 16:38
 * @说明 686. 重复叠加字符串匹配
 * 给定两个字符串 a 和 b，寻找重复叠加字符串 a 的最小次数，使得字符串 b 成为叠加后的字符串 a 的子串，如果不存在则返回 -1。
 * 注意：字符串 "abc" 重复叠加 0 次是 ""，重复叠加 1 次是 "abc"，重复叠加 2 次是 "abcabc"。
 */
public class Solution {
    public static void main(String[] args) {
        System.out.println(repeatedStringMatch("abcd", "cdabcdab"));
    }

    public static int repeatedStringMatch(String a, String b) {
        StringBuilder sb = new StringBuilder(a);
        int maxNum = (b.length() - 1 + a.length() - 1) / a.length() + 1;
        int num = 0;
        while (true) {
            int i = sb.indexOf(b);
            if (i == -1) {
                if (maxNum - 1 == 0)
                    return -1;
                maxNum--;
                num++;
                sb.append(a);
            } else break;
        }
        return num + 1;
    }
}
